/*
 * pruebaDinamicos.h
 *
 *  Created on: 13/10/2011
 *      Author: pablo
 */

#ifndef PRUEBADINAMICOS_H_
#define PRUEBADINAMICOS_H_

void pruebaConfiguracionAltasDinamicos() {
    std::cout << "----Pruebas Altas tipos dinamicos----" << std::endl;
	Configuracion conf;
    TipoDinamico *tipoDinamico1 = new TipoDinamico();
    tipoDinamico1->setExtension("mp3");
    tipoDinamico1->setComando("mp3Player.cgi");
    TipoDinamico *tipoDinamico2 = new TipoDinamico();
    tipoDinamico2->setExtension("mp3");
    tipoDinamico2->setComando("1.cgi");

    if(conf.agregarTipoDinamico(tipoDinamico1)) {
    	if(conf.getTipoDinamico("mp3") == "mp3Player.cgi") {
    		std::cout << "ALTA OK" << std::endl;
    	} else {
    		std::cout << "ALTA ERROR: no esta agregado" << std::endl;
    	}
    } else {
        std::cout << "ALTA ERROR: no se puede agregar uno que no existia" << std::endl;
    }

    if(conf.agregarTipoDinamico(tipoDinamico2)) {
    		std::cout << "ALTA ERROR: repetido" << std::endl;
    } else {
    	if(conf.getTipoDinamico("mp3") == "mp3Player.cgi") {
    	    std::cout << "ALTA OK" << std::endl;
    	} else {
    		std::cout << "ALTA ERROR" << std::endl;
    	}
    }
    std::cout << "----FIN Pruebas Altas tipos dinamicos----" << std::endl;
}

void pruebaRemoverDinamico() {
    std::cout << "---- Prueba remover dinamico ----" << std::endl;

    Configuracion conf;
    TipoDinamico *tipo1 = new TipoDinamico();
    tipo1->setExtension("ext1");
    tipo1->setComando("com1");
    conf.agregarTipoDinamico(tipo1);

    if(conf.removerTipoDinamico("ext1")){
        if(conf.getTipoDinamico("ext1") == "")
            std::cout << "REMOVER OK" << std::endl;
        else
            std::cout << "REMOVER ERROR" << std::endl;

    } else {
        std::cout << "REMOVER ERROR" << std::endl;
    }

    if(conf.removerTipoDinamico("invalido")) {
        std::cout << "REMOVER ERROR" << std::endl;
    } else {
        if(conf.getTipoDinamico("invalido") == "")
            std::cout << "REMOVER OK" << std::endl;

        else
            std::cout << "REMOVER ERROR" << std::endl;
    }

    std::cout << "----FIN  Prueba remover dinamico ----" << std::endl;
}

void pruebaRecuperacionListaDinamicos()
{
	std::cout << "----- PRUEBA getListaDinamicos--------" << std::endl;
    Configuracion c;
    TipoDinamico *dinamico1 = new TipoDinamico();
    dinamico1->setExtension("ext1");
    dinamico1->setComando("command1");
    TipoDinamico *dinamico2 = new TipoDinamico();
    dinamico2->setExtension("ext2");
    dinamico2->setComando("command2");
    c.agregarTipoDinamico(dinamico1);
    c.agregarTipoDinamico(dinamico2);
    std::list<TipoDinamico> l = c.getTiposDinamicos();
    std::list<TipoDinamico>::iterator it;
    for(it = l.begin();it != l.end();it++){
        if(it->getExtension() == "ext1"){
            if(it->getComando() == "command1")
                std::cout << "Recuperacion dinamico 1 Ok" << std::endl;

            else
                std::cout << "Recuperacion dinamico 1 Error" << std::endl;

        }else
            if(it->getExtension() == "ext2"){
                if(it->getComando() == "command2")
                    std::cout << "Recuperacion dinamico 2 Ok" << std::endl;

                else
                    std::cout << "Recuperacion dinamico 2 Error" << std::endl;

            }else{
                std::cout << "ERROR DE RECUPERACION DE LISTA" << std::endl;
            }

    }
    std::cout << "----- FIN PRUEBA getListaDinamicos--------" << std::endl;
}

void pruebaDinamicos() {
	std::cout << "-------- PRUEBA DINAMICOS --------" << std::endl;
    pruebaConfiguracionAltasDinamicos();
    std::cout << std::endl;
    pruebaRemoverDinamico();
    std::cout << std::endl;
    pruebaRecuperacionListaDinamicos();
    std::cout << std::endl;
    std::cout << "-------- FIN PRUEBA DINAMICOS --------" << std::endl;
    std::cout << std::endl;
}


#endif /* PRUEBADINAMICOS_H_ */
